My Profile_


Kount Overview

Kount transactions are available to Canadian integrations only.

Introduction to Kount Inquiries

There are 2 types of transactions associated with Kount:

  • Kount Inquiry
  • Kount Update

A risk inquiry request—can be performed either before or after performing a customer payment transaction. If performed before, the risk score will be less complete as it will not include most customer information.

Kount Update request is to alter or update the Kount Inquiry information, such as order number or payment authorization details.

To use the Kount Inquiry, you must implement the device data collector component. Data collector must have a unique session ID, the same session ID must be sent with the Kount Inquiry or Kount update.

Kount Data Collector

The Data Collector process provides data related to the device initiating the transaction, and runs in the background while the webpage loads in a client browser or mobile application. The data collected is used in conjunction with the RIS data.

Data Collector Process Flow - Kount

  • Customer browses to merchant order form page containing Data Collector code
  • Customer browser/mobile application automatically requests redirect on the Data Collector element
  • Customer browser is redirected to Kount servers
  • Kount collects device attributes
  • Kount directs customer browser to display static image hosted by merchant

Data Collector Process Requirements.

  1. Port 443 must be available to post and receive data from Kount
  2. The code can be inserted anywhere on the webpage prior to submission of the order. For faster results you should place this code at the top of the html page coding.
  3. Session ID

    The Session ID is the unique identifier for the collection event and is specific to the user’s request. You will use the Session ID for subsequent calls to the Inquiry Service

    Session ID Requirements

    • Session IDs must be unique per request. They must be unique for a minimum of 30 days.
    • Session ID must contain only alphanumeric characters (0-9, a-z or A-Z), dashes (-) or underscores (_).
    • Session ID values should be 32 characters in length. Session ID values of less than 32 characters will be accepted, but it is strongly recommended to use a 32 character value.

    Implementation Details

    We advise that you create a the session id that is sent over to Kount and this is accomplished by creating the session ID that meets the criteria described below and including that in the call to download the Device Data Collection SDK (web implementation only). Assuming the session ID used in this example is abcdefg12345abababab123456789012, the call to download the SDK looks like this:

  4. Web Client and Browser Set Up
  5. The Data Collector runs on a client’s browser and collects a variety of information that helps uniquely identify the device.  There are four high level integration steps required:

    1. Download the Kount Device Data Collection SDK

      The Kount Device Data Collection SDK is hosted by Kount, and needs to be downloaded dynamically to be used on a web page.

      The following code can be used to download the SDK:

      Variable

      Description

      m

      Six digit Merchant ID number issued by Kount

      s

      32 character session ID

      Exclude this parameter from the call to the download of the SDK to have Kount generate a session ID for you.

      DATA\_COLLECTOR\_URL

      The URLs for the Data Collector are Environment specific. There is a URL for Test and a URL for Production


      DATA_COLLECTOR URL:

      Sandbox: https://tst.kaptcha.com

      Production: https://ssl.kaptcha.com

    2.  Content Security Policy

      If your organization has instituted a Content Security Policy on your website that interferes with the execution of the Device Data Collection on your site, you will need to add this to your page.

    3. Configure the Trigger

      The Device Data Collector SDK collection process is triggered asynchronously by the ‘load’ data-event. This gives the collector the most available time to complete its work. The collection is bound to the page load event by adding the kaxsdc class and data-event=‘load’ to an HTML element, such as the HTML body or a div. It looks something like this:

    4. Configure the Client

      The Kount collector JavaScript is namespaced under the ka JavaScript object. It is required to have the above /collect/sdk script tag added to your page, which will import the Device Data Collector SDK.

      To start using the Device Data Collector SDK:

      • Create a new ClientSDK object

      • Optionally Setup Callback Methods

      The SDK provides a client programmable callback system that allows the client to execute custom code at certain points in the data collection process. This method allows a merchant to add a callback function to be called at a specified life-cycle hook. A merchant can pass a JavaScript object containing one or more life cycle hooks with a function pointer or an anonymous function to be executed.

      List of hooks (In order of firing):

      • collect-begin - Triggers when the collection starts
      • collect-end - Triggers when the collection ends

      When executed, the callback function is passed a JavaScript object containing the following properties:

      • MercSessId – The session ID used in the collection
      • MerchantId – The merchant Id

      • Auto Load Events

      Call the autoLoadEvents method on the client to attach the collection process to be automatically triggered by the page elements load event with the className “kaxsdc" configured in Step 3.

    5. Code Example

      This code is an example of where each of the components discussed above appear in the web page. Use this example to help you understand where to best integrate into your website.

      NOTE: It is recommended that the Data Collector code exist at the top of the page load so it has adequate time to run before a user finishes their interaction with the webpage.


Native iOS and Android SDKs

The implementation of the Device Data Collector is different for native Mobile Apps. Kount has native Mobile SDKs for both iOS and Android. These SDKs can be used with all current Kount products. The native Mobile SDKs collect more data and increase the reliability of the Device ID across the life of a device. Choose the links below for more information.

iOS SDK

Installing & Configuring the SDK, and Samples.

https://github.com/Kount/kount-ios-sdk

Android SDK

Installing & Configuring the SDK, and Samples.

https://github.com/Kount/kount-android-sdk


Kount Inquiry

A risk inquiry request—can be performed either before or after performing a customer payment transaction. If performed before, the risk score will be less complete as it will not include most customer information.

Canada Code Sample

import java.io.*; 
import java.util.*;
import java.net.*;

import JavaAPI.*;

public class TestKountInquiry
{
  public static void main(String args[]) throws IOException
  {

/********************** Request Variables ****************************/

        String host = "esqa.moneris.com";
        String store_id = "moneris";
        String api_token = "hurgle";
        
        KountInquiry kountInquiry = new KountInquiry();
        
                kountInquiry.setKountMerchantId("760000"); //6 digit - This is a UNIQUE local identifier used by the merchant to identify the kount inquiry request
		kountInquiry.setKountApiKey("eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiI3NjAwMDAiLCJhdWQiOiJLb3VudC4xIiwiaWF0IjoxNTU4MDQwODQ5LCJzY3AiOnsia2EiOm51bGwsImtjIjpmYWxzZSwiYXBpIjp0cnVlLCJyaXMiOnRydWV9fQ.y3_2yzd11-Y_F6_xzVsXI-NO1a7P6ldMjDnKzl5yBko"); //214 character max - This is a UNIQUE local identifier used by the merchant to identify the kount inquiry request
		kountInquiry.setOrderId("nqa-orderidkount-1"); //64 characters max - This is a UNIQUE local identifier used by the merchant to identify the transaction e.g. purchase order number.
		kountInquiry.setCallCenterInd("N"); //Y or N - Risk Inquiry originating from call center environment
		kountInquiry.setCurrency("CAD"); //country of currency submitted on order
		kountInquiry.setDataKey("3B1C19fgfRObNHaQh5qVCpRW2"); //token from moneris vault service to represent pan if previously tokenized
		kountInquiry.setEmail("test@gmail.com"); //email address submitted by the customer
		kountInquiry.setCustomerId("NQA"); //Merchant assigned account number for consumer
		kountInquiry.setAutoNumberId("NQA-X1"); //Automatic Number Identification (ANI) submitted with order
		kountInquiry.setFinancialOrderId("nqa-fin-orderid-1"); //32 characters max - This is a local identifier used by the merchant to identify the transaction e.g. purchase order number.
		kountInquiry.setPaymentToken("4242424242424242"); //payment token submitted by merchant (ie: credit card, payer ID)
														   /*	Payment Type Must be one of the following values:
															   APAY-­Apple Pay
															   CARD-­Credit Card
															   PYPL-­PayPal
															   NONE-­None
															   GOOG-­Google Checkout
															   GIFT-­Gift Card
															   INTERAC-­Interac
															   CHEK - Check
															   GDMP - Green Dot Money Pack
															   BLML - Bill Me Later
															   BPAY - BPAY
															   NETELLER - Neteller
															   GIROPAY - GiroPay
															   ELV - ELV
															   MERCADE_PAGO - Mercade Pago
															   SEPA - Single Euro Payments Area
															   CARTE_BLEUE - Carte Bleue
															   POLI - POLi
															   Skrill/Moneybookers - SKRILL
															   SOFORT - Sofort
														   */
		kountInquiry.setPaymentType("CARD"); //payment type submitted by merchant
		kountInquiry.setIpAddress("192.168.2.1"); //Dotted Decimal IPv4 address that the merchant sees coming from the customer
		kountInquiry.setSessionId("xjudq804i1049jkjakdad"); //unique session id.  Must be unique over a 30-day span
		kountInquiry.setWebsiteId("DEFAULT");
		kountInquiry.setAmount("100"); //Transaction amount This must contain at least 3 digits, two of which are penny values
		kountInquiry.setPaymentResponse("A"); //A - Authorized, D - Declined - payment transaction response
		kountInquiry.setAvsResponse("M"); //M - Match, N - No Match - avs verification response returned from payment request. This can be provided should kountInquiry be performed after the transaction is complete
		kountInquiry.setCvdResponse("M"); //M - Match, N - No Match, X - Unsupported/Unavailable - cvd response returned to merchant from processor. This can be provided should kountInquiry be performed after the transaction is complete
		kountInquiry.setBillStreet1("3300 Bloor Street"); //billing street address line 1
		kountInquiry.setBillStreet2("West Tower"); //billing street address line 2
		kountInquiry.setBillCountry("CA"); //2 character - billing country code
		kountInquiry.setBillCity("Toronto"); //billing address city
		kountInquiry.setBillPostalCode("M8X2X2"); //billing address postal code
		kountInquiry.setBillPhone("4167341000"); //billing phone number
		kountInquiry.setBillProvince("ON"); //billing address province
		kountInquiry.setDob("1950-11-12"); //YYYY-MM-DD
		kountInquiry.setEpoc("1491783223"); //timestamp expressed as seconds from epoch
		kountInquiry.setGender("M"); //M - Male or F - Female
		kountInquiry.setLast4("4242"); //last 4 digits of credit card value
		kountInquiry.setCustomerName("Moneris Test"); //customer name submitted with the order
		kountInquiry.setShipStreet1("3200 Bloor Street"); //shipping street address line 1
		kountInquiry.setShipStreet2("East Tower"); //shipping street address line 2
		kountInquiry.setShipCountry("CA"); //2 digit - shipping country code
		kountInquiry.setShipCity("Toronto"); //shipping address city
		kountInquiry.setShipEmail("test@gmail.com"); //email of recipient
		kountInquiry.setShipName("Moneris Test"); //name of recipient
		kountInquiry.setShipPostalCode("M8X2X3"); //shipping address postal code
		kountInquiry.setShipPhone("4167341001"); //ship-to phone number
		kountInquiry.setShipProvince("ON"); //shipping address province
		kountInquiry.setShipType("ST"); //Same Day = SD, Next Day = ND, Second Day = 2D, Standard = ST

		//Product Details - item number, product_type, product_item (SKU), product_description, product quatity, product_price
		//1-25 products can be added - must be in sequence starting with 1
		kountInquiry.setProduct(1, "Phone", "XM9731S", "iPhone 7", "1", "100");
		kountInquiry.setProduct(2, "Phone", "YM9731R", "iPhone 6", "1", "100");

		//Local Attributes - 255 character max each,These attributes can be used to pass custom attribute data. These are used if you wish to correlate some data with the returned response via kount
		//1-25 of these can be submitted in one request - must be in sequence starting with 1
		kountInquiry.setUdfField("LOCAL_ATTRIBUTE_1", "iPhone 7");
		kountInquiry.setUdf();

        //Standard Post Request
        KountHttpsPostRequest mpgReq =
	            new KountHttpsPostRequest(host, store_id, api_token, kountInquiry);
	            		
        //Optionally Post Request via Proxy
        /*String proxyHost = "";
        String proxyPort = "";
        String proxyUser = "";
        String proxyPassword = "";

		KountHttpsPostRequest mpgReq =
        	new KountHttpsPostRequest(host, store_id, api_token, kountInquiry, proxyHost,proxyPort, proxyUser, proxyPassword);*/
        
		try
        {
			KountReceipt[] kountReceipt = mpgReq.getKountReceipts();
			
			for (int i = 0;i<kountReceipt.length;i++)
            {
				System.out.println("ResponseCode = " + kountReceipt[i].getResponseCode());
				System.out.println("ReceiptId = " + kountReceipt[i].getReceiptId());
				System.out.println("Message = " + kountReceipt[i].getMessage());
				System.out.println("KountResult = " + kountReceipt[i].getKountResult());
				System.out.println("KountTransactionId = " + kountReceipt[i].getKountTransactionId());
				System.out.println("KountScore = " + kountReceipt[i].getKountScore());
				System.out.println("KountInfo = " + kountReceipt[i].getKountInfo());
            }
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
  }
} // end TestKountInquiry example

                

Kount Inquiry transaction object definition

KountInquiry kountInquiry = new KountInquiry();

HttpsPostRequest object for Kount Inquiry transaction

HttpsPostRequest mpgReq = new HttpsPostRequest();

mpgReq.setTransaction(kountInquiry);

Kount Inquiry object mandatory values

Value Type Limits Set Methods
Order ID String 50-character alphanumeric kountInquiry.setOrderId("nqa-orderidkount-1");
Kount merchant Id String 6-character alphanumeric kount_merchant_id.setKountMerchantId("760000");
Kount api key String Varies kountInquiry.setKountApiKey("eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiI3NjAwMDAiLCJhdWQiOiJLb3VudC4xIiwiaWF0IjoxNTU4MDQwODQ5LCJzY3AiOnsia2EiOm51bGwsImtjIjpmYWxzZSwiYXBpIjp0cnVlLCJyaXMiOnRydWV9fQ.y3_2yzd11-Y_F6_xzVsXI-NO1a7P6ldMjDnKzl5yBko");
Payment response String 1-character alphanumeric kountInquiry.setPaymentResponse("A");
Payment token String 32-character alphanumeric kountInquiry.setPaymentToken("4242424242424242");
Payment type String 4-character alphanumeric kountInquiry.setPaymentType("CARD");
Currency String 3-character alphanumeric kountInquiry.setCurrency("CAD");
Call Center indicator String 1-character alphanumeric kountInquiry.setCallCenterInd("N");
Session ID String 32-character alphanumeric kountInquiry.setSessionId("xjudq804i1049jkjakdad");
Website ID String 8-character alphanumeric kountInquiry.setWebsiteId("DEFAULT");
IP address String 16-character alphanumeric kountInquiry.setIpAddress("192.168.2.1");
Amount String 10-character decimal; Up to 7-character numeric + 2-character numeric after the decimal point kountInquiry.setAmount("100");
Email String 32 - alphanumeric64-character alphanumeric kountInquiry.setEmail("test@gmail.com");
Product Array Itemnumber + 5 variables required per Product item, as follows
Maximum 25 product items
kountInquiry.setProduct(itemnumber, prod_type_n, prod_item_n, prod_desc_n, prod_quant_n, prod_price_n);
Shopping cart item typen String 255-character alphanumeric n/a
Shopping cart item SKUn String 255-character alphanumeric n/a
Shopping cart item descriptionn String 255-character alphanumeric n/a
Shopping cart item quantityn String 5-character alphanumeric n/a
Shopping cart item pricen String 9-character decimal; Up to 7-character numeric + 2-character numeric after the decimal point n/a

Kount Inquiry object optional values

Value Type Limits Set Method
Automatic Number Identification (ANI)
Note:Conditional – must only be sent when Call Center indicator = Y
String 32-character alphanumeric kountInquiry.setAutoNumberId("NQA-X1");
AVS response String 1-character alphanumeric kountInquiry.setAvsResponse("M");
CVD response String 2-character alphanumeric kountInquiry.setCvdResponse("M");
Billing street 1 String 255-character alphanumeric kountInquiry.setBillStreet1("3300 Bloor Street");
Billing street 2 String 255-character alphanumeric kountInquiry.setBillStreet2("West Tower");
Billing country String 2-character alphanumeric kountInquiry.setBillCountry("CA");
Billing city String 255-character alphanumeric kountInquiry.setBillCity("Toronto");
Billing state/province String 255-character alphanumeric kountInquiry.setBillProvince("ON");
Billing postal/ZIP code String 20-character alphanumeric kountInquiry.setBillPostalCode("M8X2X2");
Date of birth String YYYY-MM-DD kountInquiry.setDob("1950-11-12");
Timestamp String 10-character alphanumeric kountInquiry.setEpoc("1491783223");
Gender String 1-character alphanumeric
M or F
kountInquiry.setGender("M");
Last 4 digits of CC String 4-character alphanumeric kountInquiry.setLast4("4242");
Customer name String 64-character alphanumeric kountInquiry.setCustomerName("Moneris Test");
Financial order ID String 32-character alphanumeric kountInquiry.setFinancialOrderId("nqa-finorderid-1");
Shipping street 1 String 255-character alphanumeric kountInquiry.setShipStreet1("3200 Bloor Street");
Shipping street 2 String 256-character alphanumeric????????????????? kountInquiry.setShipStreet2("East Tower");
Shipping city String 255-character alphanumeric kountInquiry.setShipCity("Toronto");
Shipping email String 64-character alphanumeric kountInquiry.setShipEmail("test@gmail.com");
Shipping name String 64-character alphanumeric kountInquiry.setShipName("Moneris Test");
Shipping postal/ZIP code String 20-character alphanumeric kountInquiry.setShipPostalCode("M8X2X3");
Shipping province/state String 255-character alphanumeric kountInquiry.setShipProvince("ON");
Shipping type String 2-character alphanumeric kountInquiry.setShipType("ST");
Customer ID String 32-character alphanumeric kountInquiry.setCustomerId("NQA");
Local attribute n (up to 25 attributes allowed) String 255-character alphanumeric kountInquiry.setLocalAttrib(1, "iPhone 7");
Data key String 25-character alphanumeric kountInquiry.setData(data_key);

Kount Update

This transaction is done to request to update the Kount risk inquiry information, such as order number and payment authorization details.

Canada Code Sample

import java.io.*; 
import java.util.*;
import java.net.*;

import JavaAPI.*;

public class TestKountUpdate
{
  public static void main(String args[]) throws IOException
  {

/********************** Request Variables ****************************/

        String host = "esqa.moneris.com";
        String store_id = "moneris";
        String api_token = "hurgle";

        KountUpdate kountUpdate = new KountUpdate ();
        
        kountUpdate.setKountTransactionId("PHJS0J2PK1MB"); //kount transaction ID number that is returned in the response of a kount_inquiry request
		kountUpdate.setKountMerchantId("760000"); //6 digit - This is a UNIQUE local identifier used by the merchant to identify the kount inquiry request
		kountUpdate.setKountApiKey("eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiI3NjAwMDAiLCJhdWQiOiJLb3VudC4xIiwiaWF0IjoxNTU4MDQwODQ5LCJzY3AiOnsia2EiOm51bGwsImtjIjpmYWxzZSwiYXBpIjp0cnVlLCJyaXMiOnRydWV9fQ.y3_2yzd11-Y_F6_xzVsXI-NO1a7P6ldMjDnKzl5yBko"); //214 character max - This is a UNIQUE local identifier used by the merchant to identify the kount inquiry request
		kountUpdate.setOrderId("nqa-orderidkount-5"); //64 characters max - This is a UNIQUE local identifier used by the merchant to identify the transaction e.g. purchase order number.
		kountUpdate.setFinancialOrderId("nqa-fin-orderid-1"); //32 characters max - This is a local identifier used by the merchant to identify the transaction e.g. purchase order number
		kountUpdate.setDataKey("3B1C19fgfRObNHaQh5qVCpRW2"); //token from moneris vault service to represent pan if previously tokenized
		kountUpdate.setPaymentToken("4242424242424242"); //payment token submitted by merchant (ie: credit card, payer ID)
								/*	Payment Type Must be one of the following values:
								APAY-­Apple Pay
								CARD-­Credit Card
								PYPL-­PayPal
								NONE-­None
								GOOG-­Google Checkout
								GIFT-­Gift Card
								INTERAC-­Interac
								CHEK - Check
								GDMP - Green Dot Money Pack
								BLML - Bill Me Later
								BPAY - BPAY
								NETELLER - Neteller
								GIROPAY - GiroPay
								ELV - ELV
								MERCADE_PAGO - Mercade Pago
								SEPA - Single Euro Payments Area
								CARTE_BLEUE - Carte Bleue
								POLI - POLi
								Skrill/Moneybookers - SKRILL
								SOFORT - Sofort
								*/
		kountUpdate.setPaymentType("CARD"); //payment type submitted by merchant
		kountUpdate.setSessionId("xjudq804i1049jkjakdad");  //unique session id.  Must be unique over a 30-day spa
		kountUpdate.setPaymentResponse("A"); //A - Authorized, D - Declined - payment transaction response
		kountUpdate.setAvsResponse("M"); //M - Match, N - No Match - avs verification response returned from payment request. This can be provided should kount_inquiry be performed after the transaction is complete
		kountUpdate.setCvdResponse("N"); //M - Match, N - No Match, X - Unsupported/Unavailable - cvd response returned to merchant from processor. This can be provided should kount_inquiry be performed after the transaction is complete
		kountUpdate.setLast4("4242"); ////last 4 digits of credit card value
		kountUpdate.setEvaluate("Y"); //Y or N - If set to Y, full re-evaluation will be performed with Kount.  If unset, default value is N
		kountUpdate.setRefundStatus("C"); //R = Refund, C = Chargeback		
		
        //Standard Post Request
        KountHttpsPostRequest mpgReq =
	            new KountHttpsPostRequest(host, store_id, api_token, kountUpdate);
        
        /*Optionally Post Request via Proxy
        String proxyHost = "";
        String proxyPort = "";
        String proxyUser = "";
        String proxyPassword = "";

		KountHttpsPostRequest mpgReq =
        	new KountHttpsPostRequest(host, store_id, api_token, kountUpdate, proxyHost,proxyPort, proxyUser, proxyPassword);*/
		
		try
        {
			KountReceipt[] kountReceipt = mpgReq.getKountReceipts();
			
			for (int i = 0;i<kountReceipt.length;i++)
            {
				System.out.println("ResponseCode = " + kountReceipt[i].getResponseCode());
				System.out.println("ReceiptId = " + kountReceipt[i].getReceiptId());
				System.out.println("Message = " + kountReceipt[i].getMessage());
				System.out.println("KountResult = " + kountReceipt[i].getKountResult());
				System.out.println("KountTransactionId = " + kountReceipt[i].getKountTransactionId());
				System.out.println("KountScore = " + kountReceipt[i].getKountScore());
				System.out.println("KountInfo = " + kountReceipt[i].getKountInfo());
            }
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
        
  	}
} // end TestKountUpdate example

                

Kount Update transaction object definition

KountUpdate kount_update = new KountUpdate();

HttpsPostRequest object for Kount Update transaction

HttpsPostRequest mpgReq = new HttpsPostRequest();

mpgReq.setTransaction(kount_update);

Kount Update object mandatory values

Value Type Limits Set Method
Kount merchant ID String 6-character alphanumeric kount_update.setKountMerchantId("760000");
Kount API key String Varies kount_update.setKountApiKey("eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiI3NjAwMDAiLCJhdWQiOiJLb3VudC4xIiwiaWF0IjoxNTU4MDQwODQ5LCJzY3AiOnsia2EiOm51bGwsImtjIjpmYWxzZSwiYXBpIjp0cnVlLCJyaXMiOnRydWV9fQ.y3_2yzd11-Y_F6_xzVsXI-NO1a7P6ldMjDnKzl5yBko");
Session ID String 32-character alphanumeric kount_update.setSessionId("xjudq804i1049jkjakdad");
Kount transaction ID String 32-character alphanumeric kount_update.setKountTransactionId("PHJS0J2PK1MB");

Kount Update transaction optional values

Value Type Limits Set Method
Payment response
Note:Conditional – must only be sent when Call Center indicator = Y
String 1-character alphanumeric kount_update.setPaymentResponse("A");
AVS response String 1-character alphanumeric kount_update.setAvsResponse("M");
CVD response String 2-character alphanumeric kount_update.setCvdResponse("N");
Last 4 digits of CC String 4-character alphanumeric kount_update.setLast4("4242");
Financial order ID String 32-character alphanumeric kount_update.setFinancialOrderId("nqa-finorderid-1");
Payment token String 32-character alphanumeric kount_update.setPaymentToken("4242424242424242");
Payment type String 4-character alphanumeric kount_update.setPaymentType("CARD");
Refund status String 1-character alphanumeric
R or C
kount_update.setRefundStatus("C");
Data key String 25-character alphanumeric kount_update.setData(data_key);

Definition of Request Fields

Definitions of Request Fields - Kount Risk Inquiries API

Variable Name
Size/Type
Description
kount_merchant_id 6-character alphanumeric Merchant ID assigned to merchant by Kount
kount_api_key Varies API key assigned to merchant by Kount
order_id 50-character alphanumeric Unique Moneris Gateway transaction identifier
call_center_ind 1-character alphanumeric (Y/N) Flag indicating whether risk inquiry request originates from a call center environment

If the customer service agents navigate to a separate order entry page that does not collect iframe data: When sending the kount_inquiry request, set call_center_ind to Y

If the customer service agents navigate to the same order entry page as the customer: When sending the kount_inquiry request, set call_center_ind to N

If RIS call does not originate from a call center environment, set call_center_ind to N
currency 3-character alphanumeric Country of currency submitted on order
email 64-character alphanumeric This is the email address submitted by the customer

NOTE: If a call center is accepting orders on behalf of customers and the customer does not provide an email address OR the customer does not have an email address, noemail@kount.com must be submitted

customer_id 32-character alphanumeric Merchant-assigned account number for the customer
auto_number_id 32-character alphanumeric Automatic Number Identification (ANI) submitted with order

If the ANI cannot be determined, merchant must pass 0123456789 as the ANID

NOTE: This field is only valid for phone-to-web requests where customer service agents navigate to a separate order entry page that does not collect iframe data RIS submissions

financial_order_id 32-character alphanumeric Unique identifier for transactions at Kount
payment_response 1-character alphanumeric Authorization Status returned to merchant from processor

A = Authorized

D = Declined

In orders where payment_response = A will aggregate towards order velocity of the persona while orders where payment_response = D will decrement the velocity of the persona
payment_token 32-character alphanumeric Payment token submitted by merchant for order (credit card, payer ID, routing/transit, MICR, and account number)

If payment_type is set to None then the payment_token value should be left empty (NULL)

If the credit card information is not available and a Moneris Vault token is used to process payment set payment_type = CARD and send the token (data key) in the payment_token field.
payment_type 4-character alphanumeric Payment Type submitted by merchant:

APAY - Apple Pay

CARD - Credit Card

PYPL - PayPal

CHEK - Check

NONE - None

GDMP - Green Dot Money Pack

GOOG - Google Checkout

BLML - Bill Me Later

GIFT - Gift Card

BPAY - BPAY

NETELLER - Neteller

GIROPAY - GiroPay

ELV - ELV

MERCADE_PAGO - Mercade Pago

SEPA - Single Euro Payments Area

INTERAC - Interac

CARTE_BLEUE - Carte Bleue

POLI - POLi

Skrill/Moneybookers - SKRILL

SOFORT - Sofort

If the credit card information is not available and a Moneris Vault token is used to process payment set payment_type = CARD and send the token (data key) in the payment_token field
session_id 32-character alphanumeric Unique Session ID; must be unique over a 30-day span
website_id 8-character alphanumeric Website identifier of where order originated
ip_address 16-character alphanumeric Dotted Decimal IPv4 address that the merchant sees coming from the customer

If the Phone to Web exclusion is used, the ip_address field should be hard coded to be 10.0.0.1.

Other than for Phone to Web requests (where the customer service agents navigate to a separate order entry page that does not collect iframe data), the ip_address field should never be an anonymous IP address (e.g., 10.X.X.X or 192.168.X.X)
amount 10-character decimal; Up to 7- character numeric + 2-character numeric after the decimal point

EXAMPLE: 1234567.89

Amount of the transaction

Must contain 3 digits with two penny values

The minimum value passed can be 0.01 and the maximum 9999999.99
kount_transaction_id 32-character alphanumeric Transaction ID required for update calls to Kount; generated by Kount, must match KountTransactionId returned from original RIS Post
evaluate 5-character alphanumeric If set to ‘true’, full re-evaluation will be performed with Kount

If unset, default value is 'false'
avs_response 1-character alphanumeric Address Verification System verification response returned to merchant from processor with payment request
cvd_response 2-character alphanumeric CVD verification response returned to merchant from processor with payment request
bill_street_1 255-character alphanumeric Billing street address - Line 1
bill_street_1 255-character alphanumeric Billing street address - Line 1
bill_street_2 255-character alphanumeric Billing street address - Line 2
bill_country 2-character alphanumeric Billing address - Country
bill_city 255-character alphanumeric Billing address - City
bill_postal_code 20-character alphanumeric Billing address - Postal Code
bill_phone 32-character alphanumeric Bill-to Phone Number
bill_province 255-character alphanumeric Billing address - State/Province
dob YYYY-MM-DD Date of Birth
epoc 10-character alphanumeric This is a timestamp and is expressed as a number; represents the number of seconds elapsed since midnight 01/01/1970

For more information, refer to www.epochconverter.com
gender 1-character alphanumeric M or F
last4 4-character numeric Last 4 digit of the customer's credit card number
customer_name 64-character alphanumeric Name submitted with the order
refund_status 1-character alphanumeric Refund/Chargeback status

R = Refund

C = Chargeback
ship_street_1 255-character alphanumeric Shipping street address - Line 1
ship_street_2 256-character alphanumeric Shipping street address - Line 2
ship_country 2-character alphanumeric Shipping address - Country
ship_city 255-character alphanumeric Shipping address - City
ship_email 64-character alphanumeric Shipping address - Email address of recipient
ship_name 64-character alphanumeric Shipping address - Name of recipient
ship_postal_code 20-character alphanumeric Shipping address - Postal Code
ship_phone 32-character alphanumeric Ship-to Phone Number
ship_province 255-character alphanumeric Shipping address - State/Province
ship_type 2-character alphanumeric Shipping type

The following nomenclature is expected for shipping types to be passed to Kount:

Same Day = SD

Next Day = ND

Second Day = 2D

Standard = ST

NOTE:These three attributes can be used to pass custom attribute data if you want to correlate some data with the returned response

prod_type_n 255-character alphanumeric Shopping cart data array attribute high level or generalized description of the item added to the shopping cart;

NOTE:These three attributes can be used to pass custom attribute data if you want to correlate some data with the returned response

prod_item_n 255-character alphanumeric Shopping cart data array attribute typically the SKU for an item

NOTE:These three attributes can be used to pass custom attribute data if you want to correlate some data with the returned response

prod_desc_n 255-character alphanumeric Shopping cart data array attribute for a specific description of the item being purchased
prod_quant_n 5-character numeric Shopping cart data array attribute signifying the quantity of the item being purchased
prod_price_n 9-character decimal; Up to 7- character numeric + 2-character numeric after the decimal point

EXAMPLE:1234567.89

Shopping cart data array attribute for the price of the single item

Must contain 3 digits with two penny values

The minimum value passed can be 0.01 and the maximum 9999999.99
local_attrib_n 255-character alphanumeric Up to 25 of these can be submitted in one request, where n defines each user defined field.

Value of n can be 1 to 25

Definition of Response Fields

Definitions of Response Fields - Kount Risk Inquiries API

Variable Name
Size/Type
Description
ResponseCode 3-character numeric Three digit number; positive response when it is less than 50
ReceiptId 64-character alphanumeric Echoed order_id in the initial request
Message 255-character alphanumeric Brief description message for this query
KountResult 1-character alphanumeric (Y/N) Auto-decision response code:

A = Approve

D = Decline

R = Review
KountScore 3-character numeric Final risk score returned from Kount system
KountTransactionId 12-character alphanumeric Kount Transaction ID
Browser 64-character alphanumeric Web Browser
CardBrand 4-character alphanumeric Brand of credit card used when payment type is 'credit card'
NumCards numeric Total number of credit cards associated to persona as seen by Kount
Cookies Y/N A flag to indicate if device placing order has cookies enabled or not
CountersTriggered numeric Number of unique counter names triggered during rules evaluation
CounterNameX 64-character alphanumeric Name of counter triggered
CounterValueX numeric Sum of the number of times a counter was triggered
Country 2-character alphanumeric Two-character ISO country code associated with the physical device
DDFS 10-character alphanumeric

(YYYY-MM-DD format)
Date device first seen
DeviceLayers 55-character alphanumeric 5 device layers that comprise the device's fingerprint, representing OS, browser, Javascript, cookies and Flash settings
Devices numeric Total number of unique devices associated to persona as seen by Kount
DSR 10-character alphanumeric Device Screen Resolution
Emails numeric Total number of unique email addresses associated to persona as seen by Kount
ErrorCount numeric Number of errors the Kount request generated
ErrorCode 4-character alphanumeric Error Code displayed in RIS response
Fingerprint 32-character alphanumeric The unique fingerprint of the device placing the order
Flash 1-character alphanumeric

(Y/N )
A flag to indicate if the device placing the order has Flash enabled
Geox 2-character alphanumeric Persona related country with highest probability of fraud
HttpCountry 2-character alphanumeric User home country the device owner has set in the device's control panel
ProxyAddress 16-character alphanumeric IP address of proxy
JavaScript 1-character alphanumeric (Y/N) A flag to indicate if the device placing order has JavaScript enabled
DataCollector 1-character alphanumeric (Y/N) Flag indicating whether or not device data was collected by the Data Collector process
KYCF n/a Know Your Customer Flag
Language 2-character alphanumeric The language the device owner has set in the device control panel
LocalTime 20-character alphanumeric The local time the device owner has set in the device control panel
KountMerchantID numeric Kount Merchant ID
MobileDevice 1-character alphanumeric (Y/N) Flag to indicate if device placing the order is of mobile nature
MobileForwarder 1-character alphanumeric (Y/N) If device is mobile, flag that indicates whether it is using a forwarder to process the carrier's service
MobileType 32-character alphanumeric Type of mobile device, e.g., iPhone, Android, Blackberry, iPad, etc.
Network 1-character alphanumeric Riskiest network type associated with persona within last 14 days:

A = Anonymous

H = High School

L = Library

N = Normal

O = Open Proxy

P = Prison

S = Satellite
Mode 1-character alphanumeric Specifies the RIS post mode type
OS 64-character alphanumeric Operating System of the device
PCRemote 1-character alphanumeric (Y/N) Flag indicating whether the device is enabled to use PC remote software
Proxy 1-character alphanumeric Flag indicating whether or not a proxy server is detected
PiercedAddress 16-character alphanumeric Pierced IP address

PIP_COUNTRY = Country of pierced IP address (2, US)

PIP_LAT = Latitude of pierced IP address (Number, -90.1922)

PIP_LON = Longitude of pierced IP address (Number, 38.6312)

PIP_CITY = City of pierced IP address (255, Houston)

PIP_REGION = State/Region of pierced IP address (255 character limit)

PIP_ORG = Owner of pierced IP address or address block (64, Organization Name)
ReasonCode 16-character alphanumeric Reason code associated with rule action
Region 2-character alphanumeric Region associated to device location
GeoxRegion 2-character alphanumeric Region associated to GEOX Location
RulesTriggered numeric Number of rules triggered by post to Kount
RuleIdX numeric Rule ID associated with merchant-created rules
RuleDescriptionX 255-character alphanumeric Rule descriptions associated with RuleIdX
SessionId 32-character alphanumeric Unique Session ID
Website 8-character alphanumeric Website identifier of where order originated
Timezone 6-character alphanumeric The time zone of the device; value is number of minutes divided by 60 from Greenwich Mean Time
UserAgent 1024-character alphanumeric User agent string
Velocity numeric Quantity of orders seen from persona within last 14 days
MaxVelocity numeric Quantity of orders from persona within the most active 6 hour window in last 14 days; payment_response field must be equal to ‘A’
Version 4-character alphanumeric Specifies version of Kount system being used
VoiceDevice 1-character alphanumeric (Y/N) If it is a mobile device, flag indicating whether the device is voice activated
WarningCount numeric Number of warnings the RIS post generated
WarningCode 4-character alphanumeric Warning code displayed in the RIS response

Error Messages

Error messages that are returned if the gateway is unreachable

Global Error Receipt

You are not connecting to our servers. This can be caused by a firewall or your internet connection.

Response Code = NULL

The response code can be returned as null for a variety of reasons. The majority of the time, the explanation is contained within the Message field.
When a ‘NULL’ response is returned, it can indicate that the issuer, the credit card host, or the gateway is unavailable. This may be because they are offline or because you are unable to connect to the internet.
A ‘NULL’ can also be returned when a transaction message is improperly formatted.

Error messages that are returned in the Message field of the response

XML Parse Error in Request: <System specific detail>

An improper XML document was sent from the API to the servlet.

XML Parse Error in Response: <System specific detail>

An improper XML document was sent back from the servlet.

Transaction Not Completed Timed Out

Transaction timed out before the host responds to the gateway.

Request was not allowed at this time

The host is disconnected.

Could not establish connection with the gateway: <System specific detail>

Gateway is not accepting transactions or server does not have proper access to internet.

Input/Output Error: <System specific detail>

Servlet is not running.

The transaction was not sent to the host because of a duplicate order id

Tried to use an order id which was already in use.

The transaction was not sent to the host because of a duplicate order id

Expiry Date was sent in the wrong format.

Vault error messages

Can not find previous

Data key provided was not found in our records or profile is no longer active.

Invalid Transaction

Transaction cannot be performed because improper data was sent.

or

Mandatory field is missing or an invalid SEC code was sent.

Malformed XML

Parse error.

Incomplete

Timed out.

or

Cannot find expiring cards.

Custom Android Pay In-App SDK Responses
Response Code
Message
Definition
900 Global Error Unable to decrypt payload

Response Codes for Kount

Response Code
Response Message
001 Success
973 Unable to locate merchant kount details
984 Data error
987 Invalid transaction

Security Requirements

All Merchants and Service Providers that store, process, or transmit cardholder data must comply with PCI DSS and the Card Association Compliance Programs. However, validation requirements vary by business and are contingent upon your "Merchant Level" or "Service Provider Level". Failure to comply with PCI DSS and the Card Association Compliance Programs 3.2 may result in a Merchant being subject to fines, fees or assessments and/or termination of processing services. Non-compliant solutions may prevent merchants boarding with Moneris Solutions.

As a Moneris Solutions client or partner using this method of integration, your solution must demonstrate compliance to the Payment Card Industry Data Security Standard (PCI DSS) and/or the Payment Application Data Security Standard (PA DSS) 3.2. These standards are designed to help the cardholders and merchants in such ways as they ensure credit card numbers are encrypted when transmitted/stored in a database and that merchants have strong access control measures, logging, secure software updates, secure remote access and support.

For further information on PCI DSS and PA DSS requirements, please visit www.pcisecuritystandards.org.

For more information on how to get your application PCI-DSS compliant, please contact our Integration Specialists and visit https://developer.moneris.com to view the PCI-DSS Implementation Guide.

Testing Moneris Kount Integration & QA Credentials

A testing environment is available for you to connect to while you are integrating your site to the Moneris Gateway. The Moneris Gateway QA environment is generally available 24/7, however since it is a test environment we cannot guarantee 100% availability.  When using the APIs in the test environment you will need to use test versions of the Kount Merchant ID, SITE ID and Kount API token. The test values of these variables are different based on the Kount package you have purchased.

To begin testing for the Moneris Kount Essential Solution:

  1. Insert the test Kount merchant credentials below:

    kount_merchant_id – 760000

    kount_api_key –

    eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiI3NjAwMDAiLCJhdWQiOiJLb3VudC4xIiwiaWF0IjoxNTU4MDQwODQ5LCJzY3AiOnsia2EiOm51bGwsImtjIjpmYWxzZSwiYXBpIjp0cnVlLCJyaXMiOnRydWV9fQ.y3_2yzd11-Y_F6_xzVsXI-NO1a7P6ldMjDnKzl5yBko

    website_id – BASIC1

  2. Insert your test Store ID into the value for store_id; for information on how to get your Store ID and API token, see Testing A Solution or Request a Custom QA Account.
  3. Insert your test API token into the value for api_token.
  4. Change the host URL to the Moneris Gateway test URL at https://esqa.moneris.com.

To begin testing for the Moneris Kount Enterprise Solution:

  1. Insert the test Kount merchant credentials provided to you by your Kount Client Success Manager:

    kount_merchant_id – provided by Kount Client Success Manager

    kount_api_key –  provided by Kount Client Success Manager

    website_id – provided by Kount Client Success Manager

  2. Insert your test Store ID into the value for store_id; for information on how to get your Store ID and API token, see Testing A Solution or Request a Custom QA Account.
  3. Insert your test API token into the value for api_token.
  4. Change the host URL to the Moneris Gateway test URL at https://esqa.moneris.com.

Moneris Kount Production Credentials

For merchants using the Moneris Kount Essential solution please e-mail api@moneris.com to obtain your production Kount MID, Kount API Key and website ID (SITE ID) credentials.

For merchants using the Moneris Kount Enterprise solution your Kount credentials (Kount MID, Kount API Key and website ID) will be provided by your Kount Client Success Manager.

Moneris Kount Enterprise Test Script

It is recommended that you use test scripts to validate data is coming to Kount as expected and to prove out expected actions within your Order Management System (OMS) based on the response or reply from Kount.

Below are some examples and actions you may wish to undertake to validate your data submission and the actions within Kount and your systems based upon the Kount responses. These are all optional, but highly recommended.

While some of these examples are for how to set up items in the system, others are recommendations of order details to submit to test functionality and set up.

Below is a list of the items we recommend you test and set up:

  1. Create and verify UDFs
  2. Device Data Collection
  3. Customer Email Address
  4. Merchant Order Number
  5. Shopping Cart Information
  6. Address and Phone
  7. Payment information
  8. Test VIP List Changes

1 Create and verify UDFs

For merchants who intend to pass additional data into Kount in the form of a User Defined Field (UDF) you must create appropriate "label" entries in the Kount Agent Web Console (AWC).

To create a UDF, do the following:

  1. In the Agent Web Console (AWC), click the Fraud Control tab, and then click User Defined Fields.
  2. On the User Defined Fields page, in the lower right, click Add UDF.
  3. In the Add UDF box, enter the name of the UDF in the Label text box. A label can be a maximum of 28 characters and the first character must be a letter.
  4. Type a description in the Description field.
  5. Select Number, Alpha-Numeric, Date, or Amount from the Type drop-down menu. Note: UDFs intended for use in a VIP list must be alpha-numeric.
  6. Click Save UDF.

2 Device Data Collection

The Risk Inquiry Service (RIS) joins device data provided from the data collector process with the customer order data sent from the merchant. Once the device data and the order data are combined, RIS evaluates and scores each transaction.

It should be verified below, on the transaction details page, that the device data collector is functioning properly and that a unique session ID is being passed to Kount in each Risk Inquiry.



3 Customer Email Address

Verify that you can view the customer’s email address on the Transaction Details Page.

Note: For those instances when you do not have a valid email, you will be noemail@kount.com and you will not see any value displayed. Otherwise, you would see the email as shown below.

4 Merchant Order Number

Verify that you can view merchant’s internal order number on the Transaction Details Page

5 Shopping Cart Information

Shopping Cart details are required in Kount.  Below is a checklist of shopping cart required fields that should be verified as displaying correctly in the Transaction Details Page of your Agent Web Console.

  1. Product_Type
  2. Item_Type
  3. Description
  4. Price
  5. Units
  6. Total Amount

This bulleted list corresponds with the screenshot below.

  1. PROD_TYPE should be a High-level description of the item and can be used in rules.
  2. PROD_ITEM is Typically the SKU number for the item and can be used in rules.
  3. PROD_DESC is Specific description of the item, can be lengthy and descriptive but is not available for triggering rules.
  4. PROD_PRICE is the price per item
  5. PROD_QUANT is the quantity of items

NOTE: the double hyphen “--“ between PROD_TYPE and PROD_ITEM is a formatting separator that Kount inserts and should not be placed in data sent or rule conditions.

6 Address and Phone

Verify on the Transaction Details page those Billing and Shipping address fields you’re able to send to Kount.  For distance calculations and for address verification services (when applicable), both the two-digit ISO country code and respective postal code are required.

Billing

Street Address, City, State, Postal Code, Country, Billing Phone

Shipping

Street Address, City, State, Postal Code, Country, Billing Phone

7 Payment information

Payment information will be crucial for your overall successful utilization of Kount.   Kount offers multiple payment methods and we suggest you submit Test transactions with all which are relevant to your business, verifying the following in the Transaction Details Page of your Agent Web Console:

  1. Total of order in currency purchased (currency code will be displayed)
  2. Total in your base currency (currency code will be displayed)
  3. Payment Type (correct payment type is being shown)
  4. Sending raw card data to the SDK for Hashing (the Kount SDK will hash the raw card number for PCI compliance) – verify that you can view the Bin Country
  5. Bin and Bin Country (these will be ‘unknown’ for AMEX and Discovery cards)
  6. AUTH flag must be set to green on transactions before certification

8 Test VIP List Changes

Follow these actions to prove out workflow or expected actions within your Order Management System (OMS) based on response or reply from Kount.

  1. Add JohnDoeApprove@Acme.com email address to the VIP Approve list in the Test environment.
  2. Add JohnDoeDecline@Acme.com email address to the VIP Decline list in the Test environment.
  3. Add JohnDoeApprove@Acme.com email address to the VIP Review list in the Test environment.
  4. Place a test order using any item via the front end of the test website.
    • When filling out the customer information, use JohnDoeApprove@Acme.com as the email address.
    • Fill in necessary Test Credit Card information.
  5. Confirm that after the order has been placed, the proper customer experience message displays.
  6. Confirm the message appears as approved, declined, or under review, respectively, in the Agent Web Console (AWC).
  7. Repeat with other two emails to force the respective response.

Additional Optional Test Scenarios

Scenario Instructions
Shipping or Billing Address
  1. Add JohnDoeReview@Acme.com email address to the VIP Review list in the Test environment.
  2. Place a test order using any item via the front end of the test website.
    • When filling out the customer information, please use JohnDoeReview@Acme.com as the email address.
    • Enter 1234 Main Street, Any Town, ID, USA 83705 for the Shipping Address.
    • Enter 5678 Oak Street, Any Town, ID 83705 for the Billing Address.
    • Fill in necessary Test Credit Card information.
  3. Confirm that after the order has been placed, the proper customer experience message displays.
  4. Confirm that the order is held as review in the AWC.
  5. Confirm the Shipping Address passed correctly.
  6. Confirm the Billing Address passed correctly.
  7. Confirm your system updated accordingly with the Kount response.

Shipping or Billing Phone

  1. Add JohnDoeReview@Acme.com email address to the VIP Review list in the Test environment.
  2. Place a test order using any item, via the front end of the test website.
    • When filling out the customer information, please use JohnDoeReview@Acme.com as the email address.
    • Enter 123-456-7890 for the Shipping Phone Number.
    • Enter 102-345-6789 for the Billing Phone Number.
    • Fill in necessary Test Credit Card information.
  3. Confirm that after the order has been placed, the proper customer experience message displays.
  4. Confirm that the order is held as review in the AWC.
  5. Confirm the Shipping Phone passed correctly.
  6. Confirm the Billing Phone passed correctly.
  7. Confirm your system updated accordingly with the Kount response.

Order Number

  1. Add JohnDoeReview@Acme.com email address to the VIP Review list in the Test environment.
  2. Place a test order using any item, via the front end of the test website.
  3. Confirm that after the order has been placed, the proper customer experience message displays.
  4. Confirm that the order is held as review in the AWC.
  5. Confirm the order number populated correctly.
  6. Confirm your system updated accordingly with the Kount response.